home *** CD-ROM | disk | FTP | other *** search
/ Netware Super Library / Netware Super Library.iso / pgm_tool / lu62 / proc / fpreprcv.c < prev    next >
C/C++ Source or Header  |  1995-07-03  |  1KB  |  72 lines

  1. /*
  2.  * CopyRight 1995. Nicholas Poljakov all rights reserved.
  3.  */
  4. #include <malloc.h>
  5. #include <dos.h>
  6. #include <stdio.h>
  7. #include <preptrcv.h>
  8. #include <state1.h>
  9.  
  10.  preptrcv (tp_id,conv_id,type,locks,
  11.           p_rc)
  12.  
  13. unsigned char tp_id[8];
  14. unsigned long conv_id;
  15. unsigned char type;
  16. unsigned char locks;
  17.  
  18. struct rc {
  19.  unsigned int prim;
  20.  unsigned long sec; } *p_rc;
  21.  
  22.  {
  23.   union REGS inregs,outregs;
  24.   struct SREGS segregs;
  25.        char _near *dp1;
  26.        char _near *dp2;
  27.   struct p_rcv *ptr;
  28.   int i,l;
  29.  
  30.      l = sizeof(struct p_rcv);
  31.      if ((ptr = (char *)calloc(1,l)) == NULL)
  32.        {
  33.         p_rc->prim = PORT_BUSY; /* ¡ÑΓ ñ«ßΓπ»¡«⌐ »á¼∩Γ¿ */
  34.         p_rc->sec = 0x00;
  35.         return(0);
  36.         }
  37.  
  38.      ptr->code=Prepare_to_receive;
  39.      ptr->e_cd=0x0000;
  40.  
  41.      memcpy (ptr->tp_id,tp_id,8);
  42.      ptr->conv_id=conv_id;
  43.      ptr->type = type;
  44.      ptr->locks = locks;
  45. /*
  46.      inregs.x.dx = FP_OFF(ptr);
  47.      segregs.ds = FP_SEG(ptr);
  48.      inregs.x.ax = ptr->code;
  49.  
  50.          int86x(0x68,&inregs,&outregs,&segregs);
  51.  */
  52.      dp1 = FP_OFF( ptr );
  53.      dp2 = FP_SEG( ptr );
  54.      _asm
  55.          {
  56.             push  ds
  57.             mov   dx, word ptr dp1[0]
  58.             mov   ax, word ptr dp2[0]
  59.         mov   ds, ax
  60.         mov   ax, Prepare_to_receive
  61.             int   68h
  62.             pop   ds
  63.          }
  64.  
  65.  
  66.   p_rc->prim = ptr->prim_rc;
  67.   p_rc->sec = ptr->sec_rc;
  68.   free(ptr);
  69.  
  70.  return(0);
  71.  }
  72.